<?php

/*
Copyright 2007,2008 Benjamin V King

BH Widgets is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

BH Widgets is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with BH Widgets; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/


require_once('BH_Widget_Base.php');

class BH_Text_Widget extends BH_Controllable_Widget_Base {

function widget($args) {
	extract($args);
	
	$text = $this->get_attribute('text');
	$ev = $this->get_attribute('ev');

	echo "$before_widget\n";
	echo $this->get_widget_start_tag($args);
	
	if ($ev) {
		$text = preg_replace_callback("/(<\?php\s)(.*)\s\?>/si", 
			create_function(
				'$string',
				'ob_start(); eval("$string[2];"); $ret = ob_get_contents(); ob_end_clean(); return $ret;'),
			$text);

		$text = preg_replace_callback(
			"/(<\?wysiwyg\s)(.*)\s\?>/si", 
			create_function('$string', 'return htmlentities($string[2]);'),
		 	$text);
	}

	echo "$text\n";
	echo $this->get_widget_end_tag($args);
	echo "$after_widget\n";
}

function control() {	
	
	if ( $this->get_request_param_value('submit') ) {
		$this->update_attribute_from_param('ev');
		$this->update_attribute_from_param('text', false);
	}
	
	$text = $this->get_attribute('text');
	$ev = $this->get_attribute('ev');
	
	echo '<label>evaluate</label>:<input type="checkbox" name="'. $this->get_request_param_name('ev') .'" value="1"'. (($ev) ? 'checked' : '') .'/>';
	echo '<textarea style="width: 450px; height: 260px;" name="'. $this->get_request_param_name('text') .'">'.$text.'</textarea>';
	echo '<input type="hidden" name="'. $this->get_request_param_name('submit') .'" value="1" />';
}


}

bh_widgets_register_class('BH_Text_Widget', 460, 350);
?>
